package com.nf.db.util;

import java.sql.*;

public final class CleanerUtils {
    public static void close(ResultSet rs) throws SQLException {
        // 如果 ResultSet 对象不为 null，则关闭该对象
        if (rs != null) {
            rs.close();
        }
    }

    public static void close(PreparedStatement stmt) throws SQLException {
        // 如果 PreparedStatement 对象不为 null，则关闭该对象
        if (stmt != null) {
            stmt.close();
        }
    }

    public static void close(Connection conn) throws SQLException {
        // 如果 Connection 对象不为 null，则关闭该对象
        if (conn != null) {
            conn.close();
        }
    }

    public static void closeQuietly(ResultSet rs) {
        // 尝试关闭 ResultSet 对象，捕获可能抛出的 SQLException，不向外部抛出异常
        try {
            close(rs);
        } catch (SQLException e) {
            // Quietly
        }
    }

    public static void closeQuietly(PreparedStatement stmt) {
        // 尝试关闭 PreparedStatement 对象，捕获可能抛出的 SQLException，不向外部抛出异常
        try {
            close(stmt);
        } catch (SQLException e) {
            // Quietly
        }
    }

    public static void closeQuietly(Connection conn) {
        // 尝试关闭 Connection 对象，捕获可能抛出的 SQLException，不向外部抛出异常
        try {
            close(conn);
        } catch (SQLException e) {
            // Quietly
        }
    }

    public static void closeQuietly(PreparedStatement stmt, Connection conn){
        // 调用 closeQuietly 方法分别关闭 PreparedStatement 和 Connection 对象
        try {
            closeQuietly(stmt);
        } finally {
            closeQuietly(conn);
        }
    }

    public static void closeQuietly(ResultSet rs, PreparedStatement stmt, Connection conn) {
        // 分别调用 closeQuietly 方法关闭 ResultSet、PreparedStatement 和 Connection 对象
        try {
            closeQuietly(rs);
        } finally {
            try {
                closeQuietly(stmt);
            } finally {
                closeQuietly(conn);
            }
        }
    }
}
